package com.iooiee.builder_pattern.utils;


import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;

/**
 * 为了提高系统的灵活性和可扩展性，我们将具体建造者类的类名存储在配置文件中，并通过
 * 工具类XMLUtil来读取配置文件并反射生成对象
 */
public class XMLUtil {
    //从XML配置文件中提取具体类类名，返回一个实例对象
    public static Object getBean(){
        try {
            DocumentBuilderFactory  dFactory = DocumentBuilderFactory.newInstance();
            //创建文档对象
            DocumentBuilder  builder = dFactory.newDocumentBuilder();
            Document doc;
            doc = builder.parse(new File("src/main/java/com/iooiee/builder_pattern/xml_config/config.xml"));
//            builder.parse(new File("src\\main\\java\\com\\iooiee\\builder_pattern\\xml_config\\config.xml"));
            //获取包含类名的文本节点
            NodeList nl = doc.getElementsByTagName("className");
            Node  classNode=nl.item(0).getFirstChild();
            String  cName=classNode.getNodeValue();
            //通过类名生成实例对象并将其返回
            Class c = Class.forName("com.iooiee.builder_pattern.builder."+cName);
            Object obj = c.newInstance();
            return obj;


        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }
}
